import cv2
import numpy as np

img = cv2.imread('D:\\gun.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)  # 将图片转换到HSV

lower_red = np.array([0, 43, 46])  # 设定红色的阈值，图像中低于这个值的，图像变为0
upper_red = np.array([30, 225, 225])  # 设定红色的阈值，图像中高于这个值的，图像变为0
#分别命名三个窗口的名字
cv2.namedWindow('xz', cv2.WINDOW_NORMAL)

cv2.namedWindow('sx', cv2.WINDOW_NORMAL)


mask = cv2.inRange(hsv, lower_red, upper_red)# 根据阈值进行淹没在这两个值的中间值的都为255

# 对原图像和掩膜进行位与运算得到要处理的长方形
sx = cv2.bitwise_and(img, img, mask=mask)

# gray = cv2.cvtColor(sx, cv2.COLOR_BGR2GRAY)#先转为灰度图再进行二值化操作
#
# xz = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)#通过函数cv2.threshold会自动找到一个介于两波峰之间的阈值
# #获取原图像的行和列作为roi
# rows = img.shape[0]
# cols = img.shape[1]
#
# # 对图像进行旋转操作
# A = cv2.getRotationMatrix2D((cols/2, rows/2), -20, 1)#变换矩阵函数，第一个参数为旋转中心，第二个为为旋转角度，第三个为缩放因子
# xz = cv2.warpAffine(sx, A, (2*cols, 2*rows))#第一个参数输入图像，第二个参数为变换矩阵矩阵，第三个参数为输出图像的大小
#
#
#
cv2.imshow('sx', sx)#原图像和掩膜进行位运算后的图像
# cv2.imshow('xz', xz)#将长方形图像旋转
c = cv2.waitKey(0)

cv2.destroyAllWindows()
